package com.kookapi.utils;

import java.util.Map;

/**
 * @author bairimengchang
 * @version 1.0
 * @project java-test
 * @description 模板替换工具类
 * @date 2025/9/27
 */
public class SimpleTemplateUtils {


    /**
     * 模板字符串替换
     * @param template 模板字符串：{"username": "${username}", "password": "${password}"}
     * @param variables 变量映射：map集合（password: "admin123" username: "admin"）
     * @return 替换后的字符串
     */
    public static String render(String template, Map<String, Object> variables) {
        if (template == null || variables == null)
            // 如果模板字符串为空或者变量映射为空，则直接返回模板字符串
            return template;

        // 最终结果字符串
        String result = template;

        // Map.Entry<String, Object> 是 Map 接口的一个内部接口，表示 Map 中的一个键值对（key-value pair）
        // variables.entrySet() 返回 Map 中所有键值对的 Set 集合视图

        // 遍历所有传递的键值对
        for (Map.Entry<String, Object> entry : variables.entrySet()) {
            // 获取当前的键（key）
            String key = entry.getKey();
            // 获取当前的值（value）
            Object value = entry.getValue();
            // 构造占位符格式：${key}
            String placeholder = "${" + key + "}";

            String stringValue = value != null ? value.toString() : "";

            // 替换模板中的占位符（查找到placeholder替换为stringValue）
            result = result.replace(placeholder, stringValue);
        }
        return result;
    }

}
